home *** CD-ROM | disk | FTP | other *** search
/ Aminet 39 / Aminet 39 (2000)(Schatztruhe)[!][Oct 2000].iso / Aminet / biz / swood / FW_AllInOne.lha / Makros / ObjektManager.long < prev    next >
Text File  |  1998-01-17  |  15KB  |  495 lines

  1. /**********************************************
  2.  * ObjektManager                              *
  3.  * $VER: 1.0     © Heiko Schröder (06.01.98)  *
  4.  **********************************************/
  5.  
  6. Parse ARG FW
  7.  
  8. IF ~show('L','tritonrexx.library') then
  9.    IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN DO
  10.       'ShowMessage 2 1 "Fehler...." "Benötige Libs:tritonrexx.library" "" "Abbruch" "" ""'
  11.       exit
  12.    END
  13.  
  14. R='0A'X
  15. If FW='' then do
  16.    Address='FinalW'
  17.    Options results
  18.  
  19.    STATUS PORTNAME
  20.    FW = result
  21. End
  22.    address(FW)
  23.  
  24. SIGNAL ON syntax
  25.  
  26. If open('Hilfe',"S:FW_Paket.prefs","R") then do
  27.    HilfeVerz=readln('Hilfe')
  28.    Call Close('Hilfe')
  29. End
  30. else HilfeVerz=''
  31.  
  32. Anzeige.0=4
  33. Anzeige.1="      Ich durchsuche das Dokument"
  34. Anzeige.2="      nach vorhandenen Objekten..."
  35. Anzeige.3=""
  36. Anzeige.4="             Bitte warten..."
  37.  
  38. apptags = 'TRCA_Name     ObjektManager',
  39.           'TRCA_LongName "Übersicht der Objekte"',
  40.           'TRCA_Info     "für FinalWriter"',
  41.           'TRCA_Version  "1.0 registered"',
  42.           'TRCA_Release  "3"',
  43.           'TRCA_Date     "09.01.98"',
  44.           'TAG_END'
  45.  
  46. windowtags = WindowID(1),
  47.              WindowPosition('TRWP_CENTERDISPLAY'),
  48.              WindowFlags('TRWF_NOMINTEXTWIDTH'),
  49.              PubScreenName('FinalWriterPubScreen'),
  50.              WindowTitle("ObjektManager"),
  51.              BeginMenu('Projekt'),
  52.                 MenuItem('Q_Verlassen...',104),
  53.              BeginMenu('?'),
  54.                 MenuItem('?_Info',101),
  55.                 MenuItem('H_Hilfe',103),
  56.              'VertGroupEAC',
  57.                 'SpaceS',
  58.                 'HorizGroupEAC',
  59.                    'Space',
  60.                    TextN("Abschnitt       S.   ID - Typ              Abbildungstitel       "),
  61.                    'Space',
  62.                 'EndGroup',
  63.                 'HorizGroupEAC',
  64.                    'Space',
  65.                    FWListSS(Anzeige,1,0,0) 'TRAT_Flags TRLV_ShowSelected',
  66.                    'Space',
  67.                 'EndGroup',
  68.                 'HorizGroupEAC',
  69.                    'Space',
  70.                    Button('Ab_schnitte',5),
  71.                    'SpaceS',
  72.                    Button('_Alle',6),
  73.                    'Space',
  74.                 'EndGroup',
  75.                 'SpaceS',
  76.                 'HorizSeparator',
  77.                 'SpaceS',
  78.                 'HorizGroupEAC',
  79.                    'Space',
  80.                    Button('_Zeigen',2),
  81.                    'SpaceS',
  82.                    Button('_Bearbeiten',3),
  83.                    'SpaceS',
  84.                    Button('_Löschen',4),
  85.                    'Space',
  86.                 'EndGroup',
  87.                 'SpaceS',
  88.              'EndGroup',
  89.           'EndProject'
  90. app = TR_CREATEAPP('TRCA_Name Graphix')
  91.  
  92. IF app~= '00000000'x THEN DO
  93.    window1 = TR_OPENPROJECT(app,windowtags)
  94.  
  95.    IF window1 ~= '00000000'x THEN DO
  96.       ende = 0
  97.  
  98.       GetSectionSetup Name
  99.       FirstAbschnitt=Result
  100.       Status ParaPos
  101.       FirstPos=Result
  102.  
  103.       Call AbsErmitteln
  104.       alle=1
  105.       i=0
  106.       Do a=1 to Menge
  107.          GoToSection Abschnitte.a
  108.          GraphicTool
  109.          Abs=Abschnitte.a
  110.          Call Look
  111.       end
  112.       GoToSection FirstAbschnitt
  113.       MoveToLine FirstPos
  114.  
  115.       Call TR_SETATTRIBUTE(window1,1,'TROB_LISTVIEW',Anzeige)
  116.  
  117.       DO WHILE ~ende
  118.          CALL TR_WAIT(app,'')
  119.  
  120.          DO WHILE TR_HANDLEMSG(app,'event')
  121.  
  122.             IF event.trm_class = 'TRMS_NEWVALUE' THEN DO
  123.                SELECT
  124.                   WHEN event.trm_id = 1 THEN Do
  125.                      Zeile = event.trm_data+1
  126.                      Call EnDis
  127.                   END
  128.  
  129.                   OTHERWISE
  130.                      NOP
  131.                END
  132.             END
  133.  
  134.             IF event.trm_class = 'TRMS_ACTION' THEN DO
  135.                SELECT
  136.                   WHEN event.trm_id = 2 THEN Do                /* anzeigen*/
  137.                      Zeile= TR_GETATTRIBUTE(window1,1,'TRAT_VALUE')+1
  138.                      if anzeige.0=0 then leave
  139.  
  140.                      GetDocItemPrefs Decimal
  141.                      Punkt=Result
  142.                      If Punkt="Comma" then DocItemPrefs Decimal Period
  143.  
  144.                      GotoSection Absch.Zeile
  145.  
  146.                      GraphicTool
  147.                      Call Selectos
  148.  
  149.                      GetObjectCoords ID.Zeile
  150.                      Parse Var Result Page links oben .
  151.  
  152.                      NewFrame Page 1 1 2
  153.                      Type " "
  154.                      Backspace
  155.                      NewFrame Page links oben+1 2
  156.                      Type " "
  157.                      Backspace
  158.                      SelectObject ID.Zeile
  159.  
  160.                      If Punkt="Comma" then DocItemPrefs Decimal Comma
  161.                   END
  162.  
  163.                   WHEN event.trm_id = 3 THEN Do                /*bearbeiten*/
  164.                      Zeile= TR_GETATTRIBUTE(window1,1,'TRAT_VALUE')+1
  165.                      if anzeige.0=0 then leave
  166.  
  167.                      GotoSection Absch.Zeile
  168.  
  169.                      GraphicTool
  170.                      Call Selectos
  171.  
  172.                      If Typ.Zeile=1 then ImportPrefs PROMPT
  173.                      If (Typ.Zeile=2 | Typ.Zeile=3) then LinePrefs PROMPT
  174.                      If (Typ.Zeile=4 | Typ.Zeile=5) then BoxPrefs PROMPT
  175.                      If (Typ.Zeile=6 | Typ.Zeile=9) then OvalPrefs PROMPT
  176.                      If Typ.Zeile=7 then TextBlockPrefs PROMPT
  177.                      If Typ.Zeile=10 then ShapePrefs PROMPT
  178.                      If Typ.Zeile=11 then TablePrefs PROMPT
  179.                      If Typ.Zeile=12 then FramePrefs PROMPT
  180.                      EditBody
  181.                   END
  182.  
  183.                   WHEN event.trm_id = 4 THEN Do                /* löschen*/
  184.                      Zeile= TR_GETATTRIBUTE(window1,1,'TRAT_VALUE')+1
  185.                      if anzeige.0=0 then leave
  186.  
  187.                      GotoSection Absch.Zeile
  188.  
  189.                      GraphicTool
  190.                      Call Selectos
  191.                      DeleteObject ID.Zeile
  192.                      EditBody
  193.  
  194.                      Do z=Zeile to Anzeige.0-1     /* neu sortieren*/
  195.                         zz=z+1
  196.                         Anzeige.z=Anzeige.zz
  197.                         ID.z=ID.zz
  198.                         Typ.z=Typ.zz
  199.                         Seite.z=Seite.zz
  200.                         Name.z=Name.zz
  201.                         Art.z=Art.zz
  202.                         Absch.z=Absch.zz
  203.                      End
  204.                      z=z-1
  205.  
  206.                      Anzeige.0=z                /* Anzahl der Objekte übergeben*/
  207.                      ID.0=z
  208.                      Typ.0=z
  209.                      Seite.0=z
  210.                      Name.0=z
  211.                      Art.0=z
  212.                      Absch.0=z
  213.  
  214.                      i=0
  215.  
  216.                      Call TR_SETATTRIBUTE(window1,1,'TROB_LISTVIEW',Anzeige)
  217.  
  218.                      Zeile= TR_GETATTRIBUTE(window1,1,'TRAT_VALUE')+1
  219.                      Call EnDis
  220.                   END
  221.  
  222.                   WHEN event.trm_id = 5 THEN Do                /* Abschnitte */
  223.                      Call AbsErmitteln
  224.                      Call Fenster
  225.                      alle=0
  226.                      GoToSection Abschnitte.auswahl
  227.                      GraphicTool
  228.                      Abs=Abschnitte.auswahl
  229.                      i=0
  230.                      Call Look
  231.                      Call TR_SETATTRIBUTE(window1,1,'TROB_LISTVIEW',Anzeige)
  232.  
  233.                      Zeile= TR_GETATTRIBUTE(window1,1,'TRAT_VALUE')+1
  234.                      Call EnDis
  235.                   END
  236.  
  237.                   WHEN event.trm_id = 6 THEN Do                /* alle */
  238.                      Call AbsErmitteln
  239.                      alle=1
  240.                      i=0
  241.                      Do a=1 to Menge
  242.                         GoToSection Abschnitte.a
  243.                         GraphicTool
  244.                         Abs=Abschnitte.a
  245.                         Call Look
  246.                      end
  247.                      Call TR_SETATTRIBUTE(window1,1,'TROB_LISTVIEW',Anzeige)
  248.  
  249.                      Zeile= TR_GETATTRIBUTE(window1,1,'TRAT_VALUE')+1
  250.                      Call EnDis
  251.                   END
  252.  
  253.                   WHEN event.trm_id = 101 THEN Call rtezrequest("Aus dem Makro-Paket:"||R||R||"ObjektManager V1.0 für FW"||R||"© 1998 Heiko Schröder","Danke für Ihre Registrierung.","Info","rt_pubscrname=FinalWriterPubScreen")
  254.                   WHEN event.trm_id = 103 THEN address command "run Multiview PUBSCREEN=FinalWriterPubScreen "||d2c(34)||HilfeVerz||"ObjektManager.guide"||d2c(34)
  255.                   WHEN event.trm_id = 104 THEN ende=1
  256.  
  257.                   OTHERWISE NOP
  258.                END
  259.             END
  260.  
  261.             IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN ende = 1
  262.  
  263.          END
  264.       END
  265.  
  266.       CALL TR_CLOSEPROJECT(window1)
  267.    END
  268.  
  269.    CALL TR_DELETEAPP(app)
  270. END
  271.  
  272. Exit
  273.  
  274. /*******************************************************************************
  275. ** Bearbeiten En/DisAbled
  276. *******************************************************************************/
  277. EnDis:
  278.    If Typ.Zeile=8 then Call TR_SETATTRIBUTE(window1,3,'TRAT_DISABLED',1)
  279.    else Call TR_SETATTRIBUTE(window1,3,'TRAT_DISABLED',0)
  280. Return
  281.  
  282. /*******************************************************************************
  283. ** Routine, zum Ermitteln der Grafiken
  284. *******************************************************************************/
  285. Look:
  286. u=0
  287. GraphicTool
  288. Anzeige.0=i; ID.0=i; Typ.0=i; Seite.0=i; Name.0=i; Art.0=i; Absch.0=i
  289.  
  290. FirstObject
  291. ObjectID=result
  292. Do While ObjectID~=0
  293.    Call Grafiken
  294.  
  295.    NextObject ObjectID
  296.    ObjectID=result
  297. end
  298.  
  299. /* Seitenvorlagen kontrollieren */
  300.  
  301. GetPageSetup Pages
  302. Vorlage=result
  303. Do u=1 to 2
  304.    If u=1 then EditRightMaster
  305.    If u=2 then do
  306.       If Vorlage="LeftRight" then EditLeftMaster
  307.       else leave
  308.    End
  309.  
  310.    FirstObject
  311.    ObjectID=result
  312.    Do While ObjectID~=0
  313.       Call Grafiken
  314.  
  315.       NextObject ObjectID
  316.       ObjectID=result
  317.    end
  318. end
  319. EditBody
  320. RETURN
  321.  
  322. /*******************************************************************************
  323. ** Routine, zum Umschalten der Ansichten
  324. *******************************************************************************/
  325. Selectos:
  326.    SelectObject ID.Zeile
  327.    If RC=10 then do
  328.       EditRightMaster
  329.       SelectObject ID.Zeile
  330.       If (RC=10 & Vorlage="LeftRight") then do
  331.          EditLeftMaster
  332.          SelectObject ID.Zeile
  333.       end
  334.    end
  335. Return
  336.  
  337. /*******************************************************************************
  338. ** Routine, zum Ermitteln der Grafiken
  339. *******************************************************************************/
  340. Grafiken:
  341.    i=i+1
  342.    Anzeige.0=i; ID.0=i; Typ.0=i; Seite.0=i; Name.0=i; Art.0=i; Absch.0=i
  343.    ID.i=ObjectID
  344.  
  345.    GetObjectTitle ObjectID
  346.    Name.i=result
  347.    GetObjectType ObjectID
  348.    Typ.i=result
  349.    Select
  350.       When Typ.i=1 then Art.i="Grafik"
  351.       When Typ.i=2 then Art.i="Linie"
  352.       When Typ.i=3 then Art.i="Pfeil"
  353.       When Typ.i=4 then Art.i="Rechteck"
  354.       When Typ.i=5 then Art.i="abg. Rechteck"
  355.       When Typ.i=6 then Art.i="Oval"
  356.       When Typ.i=7 then Art.i="Textblock"
  357.       When Typ.i=8 then Art.i="Gruppierung"
  358.       When Typ.i=9 then Art.i="Kreisbogen"
  359.       When Typ.i=10 then Art.i="Umrißobjekt"
  360.       When Typ.i=11 then Art.i="Tabelle"
  361.       When Typ.i=12 then Art.i="Textrahmen"
  362.       Otherwise NOP
  363.    end
  364.  
  365.    GetObjectCoords ObjectID
  366.    Parse var result Seite .
  367.    Seite.i=Seite
  368.    If u=1 then Seite.i="rSV"
  369.    If u=2 then Seite.i="lSV"
  370.  
  371.    Absch.i=Abs
  372.  
  373.    IDe.i=ID.i
  374.    If Length(IDe.i)=1 then IDe.i=" "||IDe.i
  375.  
  376.    If alle=1 then do
  377.       abo=Abschnitte.a
  378.       If Length(abo)>11 then abo=Left(abo,11)
  379.       Anzeige.i=abo||copies(" ",12-Length(abo))||" "||Seite.i||copies(" ",4-Length(Seite.i))||" "||IDe.i||"-"||Art.i||copies(" ",13-Length(Art.i))||Name.i
  380.    end
  381.    else do
  382.       abo=Abschnitte.auswahl
  383.       If Length(abo)>11 then abo=Left(abo,11)
  384.       Anzeige.i=abo||copies(" ",12-Length(abo))||" "||Seite.i||copies(" ",4-Length(Seite.i))||" "||IDe.i||"-"||Art.i||copies(" ",13-Length(Art.i))||Name.i
  385.    end
  386. RETURN
  387.  
  388. /*******************************************************************************
  389. ** Routine, zum Selektieren der Abschnitte
  390. *******************************************************************************/
  391. Fenster:
  392. windowtags2 = WindowID(2),
  393.              WindowPosition('TRWP_CENTERDISPLAY'),
  394.              WindowFlags('TRWF_NOCLOSEGADGET|TRWF_ACTIVATESTRGAD|TRWF_NOZIPGADGET'),
  395.              PubScreenName('FinalWriterPubScreen'),
  396.              WindowTitle("Abschnitt auswählen"),
  397.              'VertGroupA',
  398.                 'SpaceS',
  399.                 'HorizGroupA',
  400.                    'SpaceS',
  401.                    FWListSelC(Abschnitte,1,0) 'TRAT_Flags TRLV_ShowSelected',
  402.                    'SpaceS',
  403.                 'EndGroup',
  404.                 'SpaceS',
  405.              'EndGroup',
  406.           'EndProject'
  407.    app2 = TR_CREATEAPP('TRCA_Name Abschnitt')
  408. IF app2~= '00000000'x THEN DO
  409.    window2 = TR_OPENPROJECT(app2,windowtags2)
  410.  
  411.    IF window2 ~= '00000000'x THEN DO
  412.       ende = 0
  413.  
  414.       DO WHILE ~ende
  415.          CALL TR_WAIT(app2,'')
  416.  
  417.          DO WHILE TR_HANDLEMSG(app2,'event')
  418.             IF event.trm_class = 'TRMS_NEWVALUE' THEN DO
  419.                SELECT
  420.                   WHEN event.trm_id = 1 THEN do
  421.                      auswahl=TR_GETATTRIBUTE(window2,1,'TRAT_VALUE')+1
  422.                      ende=1
  423.                   END
  424.  
  425.                   OTHERWISE
  426.                      NOP
  427.                END
  428.             END
  429.  
  430.             IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN ende = 1
  431.          END
  432.       END
  433.  
  434.       CALL TR_CLOSEPROJECT(window2)
  435.    END
  436.  
  437.    CALL TR_DELETEAPP(app2)
  438. END
  439. ende=0
  440. RETURN
  441.  
  442.  
  443. /*******************************************************************************
  444. ** Abschnitte ermitteln
  445. *******************************************************************************/
  446.  
  447. AbsErmitteln:
  448.    i=0
  449.    GetSectionList "ð"
  450.    Abschnitt=result
  451.    Do ForEver
  452.       pos=pos("ð",Abschnitt)
  453.       i=i+1
  454.       Abschnitte.0=i
  455.       If pos=0 then leave
  456.       Abschnitte.i=Left(Abschnitt,pos-1)
  457.       Abschnitt =Delstr(Abschnitt,1,pos)
  458.    end
  459.    Abschnitte.i=Abschnitt
  460.    Menge=i
  461. RETURN
  462.  
  463. /*******************************************************************************
  464. ** Routine, die bei einer Unterbrechung des Scripts aufgerufen wird
  465. *******************************************************************************/
  466.  
  467. syntax:
  468.    CALL quit('Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc),20)
  469.  
  470.  
  471. /*******************************************************************************
  472. ** Script beenden
  473. *******************************************************************************/
  474.  
  475. quit:
  476.    PARSE ARG message,rcode
  477.  
  478.    IF app ~= '00000000'x THEN DO
  479.       IF message ~= '' THEN
  480.          address command 'RequestChoice title=Achtung body="'message'" Gadgets=Okay PubScreen=FinalWriterPubScreen >NIL:'
  481.  
  482.       CALL TR_DELETEAPP(app)
  483.    END
  484.    ELSE DO
  485.       IF message ~= '' THEN DO
  486.          SAY message
  487.          SAY
  488.          OPTIONS PROMPT 'Bitte <RETURN> drücken'
  489.          PULL taste
  490.       END
  491.    END
  492.  
  493.    address command "flushtrx all"
  494.    EXIT(rcode)
  495.